<?php

class IngresoActividadPreInscripcionService {

    public static function getIngresoActividadPreInscripcion(IngresoActividadPreInscripcion $iapi, $dataPost) {
        $subquery = 'select 
							inpr_periodoingreso_id, 
							inpr_programaacademico_id,
							inpr_alumno_persona_numerodocumento,
							inpr_alumno_persona_tipodocumento_id,
							inpr_ingresocurso_id,
							inpr_ingresoactividad_id,
							inpr_nota,
							inpr_asistio
					from tbl_rel_ingresoactividad_preinscripcion 
					where inpr_periodoingreso_id = :periodoIngresoID
				  			and inpr_programaacademico_id = :programaAcademicoID
				  			and inpr_ingresocurso_id = :ingresoCursoID
				  			and inpr_ingresoactividad_id = :actividadID';

        $onJoin = 'preinscripcion_ingreso_periodoingreso_id = triapi.inpr_periodoingreso_id ';
        $onJoin .= 'and preinscripcion_ingreso_programaacademico_id = triapi.inpr_programaacademico_id ';
        $onJoin .= 'and preinscripcion_alumno_persona_numerodocumento = triapi.inpr_alumno_persona_numerodocumento ';
        $onJoin .= 'and preinscripcion_alumno_persona_tipodocumento_id = triapi.inpr_alumno_persona_tipodocumento_id ';
        $onJoin .= 'and preinscripcion_ingresocurso_id = triapi.inpr_ingresocurso_id ';

        $criteria = new CDbCriteria();

        $criteria->select = 'persona_apellido as preinscripcion_alumno_persona_apellido,';
        $criteria->select .= 'persona_nombres as preinscripcion_alumno_persona_nombres,';
        $criteria->select .= 'inpr_nota as preinscripcion_alumno_nota,';
        $criteria->select .= 'alumno_legajo as preinscripcion_alumno_legajo,';
        $criteria->select .= 'inpr_asistio as preinscripcion_alumno_asistio,';


        $criteria->select .= 'preinscripcion_ingreso_periodoingreso_id,';
        $criteria->select .= 'preinscripcion_ingreso_programaacademico_id,';
        $criteria->select .= 'preinscripcion_ingresocurso_id,';
        $criteria->select .= 'IFNULL(inpr_ingresoactividad_id,:actividadID) as preinscripcion_ingresoactividad_id,';
        $criteria->select .= 'preinscripcion_alumno_persona_tipodocumento_id,';
        $criteria->select .= 'preinscripcion_alumno_persona_numerodocumento';

        $criteria->join = ' join tbl_persona on preinscripcion_alumno_persona_numerodocumento = persona_numerodocumento and preinscripcion_alumno_persona_tipodocumento_id = persona_tipodocumento_id ';
        $criteria->join .= 'join tbl_alumno on preinscripcion_alumno_persona_numerodocumento = alumno_persona_numerodocumento and preinscripcion_alumno_persona_tipodocumento_id = alumno_persona_tipodocumento_id ';
        $criteria->join .= 'left join (' . $subquery . ') as triapi on ' . $onJoin;

        $criteria->addCondition('preinscripcion_ingreso_periodoingreso_id = :periodoIngresoID');
        $criteria->addCondition('preinscripcion_ingreso_programaacademico_id = :programaAcademicoID');
        $criteria->addCondition('preinscripcion_ingresocurso_id = :ingresoCursoID');
        $criteria->addCondition('preinscripcion_fechabaja is null');
        $criteria->order = 'persona_apellido';
        $criteria->params = array(
            'periodoIngresoID' => $iapi->inpr_periodoingreso_id,
            'programaAcademicoID' => $iapi->inpr_programaacademico_id,
            'ingresoCursoID' => $iapi->inpr_ingresocurso_id,
            'actividadID' => $iapi->inpr_ingresoactividad_id
        );



        $resultadoBusqueda = PreInscripcion::model()->findAll($criteria);
        $resultado = array();
        foreach ($resultadoBusqueda as $item) {
            $itemIAPI = new IngresoActividadPreInscripcion();

            $itemIAPI->inpr_periodoingreso_id = $item->preinscripcion_ingreso_periodoingreso_id;
            $itemIAPI->inpr_programaacademico_id = $item->preinscripcion_ingreso_programaacademico_id;
            $itemIAPI->inpr_ingresocurso_id = $item->preinscripcion_ingresocurso_id;
            $itemIAPI->inpr_ingresoactividad_id = $item->preinscripcion_ingresoactividad_id;
            $itemIAPI->inpr_alumno_persona_numerodocumento = $item->preinscripcion_alumno_persona_numerodocumento;
            $itemIAPI->inpr_alumno_persona_tipodocumento_id = $item->preinscripcion_alumno_persona_tipodocumento_id;
            $itemIAPI->inpr_persona_apellido = $item->preinscripcion_alumno_persona_apellido;
            $itemIAPI->inpr_persona_nombres = $item->preinscripcion_alumno_persona_nombres;
            $itemIAPI->inpr_alumno_legajo = $item->preinscripcion_alumno_legajo;
            $itemIAPI->inpr_asistio = $item->preinscripcion_alumno_asistio;
            $itemIAPI->inpr_nota = $item->preinscripcion_alumno_nota;

            if (isset($dataPost['IngresoActividadPreInscripcion']['inpr_asistio'])) {

                foreach ($dataPost['IngresoActividadPreInscripcion']['inpr_asistio'] as $key => $value) {
                    list($periodoID, $programaID, $ingresoCursoID, $ingresoActividadID, $tDOCID, $numDOC, $legajo) = explode('_', $key);

                    if ($itemIAPI->inpr_alumno_persona_tipodocumento_id == $tDOCID
                            and $itemIAPI->inpr_alumno_persona_numerodocumento == $numDOC
                    ) {

                        $itemIAPI->inpr_asistio = $value;
                        $itemIAPI->inpr_nota = $dataPost['IngresoActividadPreInscripcion']['inpr_nota'][$key];
                        break;
                    }
                }
            }
            $resultado[] = $itemIAPI;
        }

        return $resultado;
    }

   
}